import request from '@/utils/request'

/**
 * 获取文档列表（document.view.own）
 * @param {string} knowledgeBaseId - 知识库ID
 * @param {Object} params - 其他查询参数
 * @returns {Promise}
 */
export function getDocumentList(knowledgeBaseId, params = {}) {
  return request({
    url: '/document',
    method: 'get',
    params: {
      knowledgeBaseId,
      ...params
    }
  })
}

/**
 * 获取文档详情（document.view.own）
 * @param {string} documentId - 文档ID
 * @returns {Promise}
 */
export function getDocumentDetail(documentId) {
  return request({
    url: `/document/${documentId}`,
    method: 'get'
  })
}

/**
 * 上传文档（document.create）
 * @param {Object} data - 上传数据
 * @param {string} data.documentTitle - 文档标题
 * @param {string} data.knowledgeBaseId - 知识库ID
 * @param {File} data.file - 文件对象
 * @returns {Promise}
 */
export function uploadDocument(data) {
  const formData = new FormData()
  formData.append('documentTitle', data.documentTitle)
  formData.append('knowledgeBaseId', data.knowledgeBaseId)
  formData.append('file', data.file)
  
  return request({
    url: '/document/upload',
    method: 'post',
    data: formData
  })
}

/**
 * 批量上传文档（document.upload.batch）
 * @param {Object} data - 批量上传数据
 * @param {string} data.knowledgeBaseId - 知识库ID
 * @param {string} data.documentAccessLevel - 文档访问级别 (public/private)
 * @param {File[]} data.files - 文件数组
 * @returns {Promise}
 */
export function batchUploadDocuments(data) {
  const formData = new FormData()
  formData.append('knowledgeBaseId', data.knowledgeBaseId)
  formData.append('documentAccessLevel', data.documentAccessLevel)
  
  data.files.forEach(file => {
    formData.append('files', file)
  })
  
  return request({
    url: '/document/batch-upload',
    method: 'post',
    data: formData
  })
}

/**
 * 更新文档信息（document.update.own）
 * @param {string} documentId - 文档ID
 * @param {Object} data - 更新数据
 * @param {string} data.documentTitle - 文档标题
 * @returns {Promise}
 */
export function updateDocument(documentId, data) {
  return request({
    url: `/document/${documentId}`,
    method: 'put',
    data
  })
}

/**
 * 更新文档权限（document.update.own）
 * @param {string} documentId - 文档ID
 * @param {Object} data - 权限数据
 * @param {string} data.documentAccessLevel - 文档访问级别 (public/private)
 * @returns {Promise}
 */
export function updateDocumentPermissions(documentId, data) {
  return request({
    url: `/document/${documentId}/permissions`,
    method: 'put',
    data
  })
}

/**
 * 删除文档（document.delete.own）
 * @param {string} documentId - 文档ID
 * @returns {Promise}
 */
export function deleteDocument(documentId) {
  return request({
    url: `/document/${documentId}`,
    method: 'delete'
  })
}

/**
 * 下载文档
 * @param {string} documentId - 文档ID
 * @returns {Promise}
 */
export function DownloadDocument(documentId) {
  return request({
    url: `/document/download/${documentId}`,
    method: 'get',
    responseType: 'blob' // 设置响应类型为blob以支持文件下载
  })
}

/**
 * 重新处理文档（重新分块和向量化）
 * @param {string} documentId - 文档ID
 * @returns {Promise}
 */
export function reprocessDocument(documentId) {
  return request({
    url: `/document/${documentId}/reprocess`,
    method: 'post'
  })
}

// FormData 创建逻辑已内置到对应的上传函数中
